package demo.vo;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import lombok.Getter;
import lombok.Setter;

import java.util.List;
import java.util.Map;

@Setter
@Getter
public class User {

    @SerializedName("user_name") // JSON 中的键是 user_name，Java 字段名是 name
    private String name;

    @SerializedName(value = "user_age", alternate = {"age", "u_age"}) // 支持多个 JSON 键映射到同一字段
    private Integer age;

    /**
     * Expose： 控制字段是否参与序列化 / 反序列化。
     * 若要使 @Expose 生效，需通过 GsonBuilder 构建 Gson 实例：
     * Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
     */
    @Expose(serialize = true, deserialize = true) // 序列化+反序列化（默认）
    private List<String> lovers;

    private Map<String, Object> info;
}